// src/api/userApi.js
import request from '../utils/request';

const userApi = {
  /**
   * 用户登录
   * @param {Object} loginData - 登录数据
   * @param {string} loginData.username - 用户名
   * @param {string} loginData.password - 密码
   * @param {string} loginData.captchaId - 验证码ID
   * @param {string} loginData.captchaCode - 验证码
   * @returns {Promise} 返回登录结果和Token
   */
  login: (loginData) => request({
    url: '/api/user/login',
    method: 'post',
    data: loginData
  }),

  /**
   * 验证Token
   * @returns {Promise} 返回Token验证结果
   */
  validateToken: () => request({
    url: '/api/user/validate',
    method: 'get'
  }),

  /**
   * 用户登出
   * @returns {Promise} 返回登出结果
   */
  logout: () => request({
    url: '/api/user/logout',
    method: 'post'
  }),

  /**
   * 创建用户（管理员专用）
   * @param {Object} userData - 用户数据
   * @param {string} userData.username - 用户名
   * @param {string} userData.password - 密码
   * @param {number} userData.administrator - 管理员标识
   * @param {number} userData.employeeId - 员工ID（可选）
   * @returns {Promise} 返回创建结果
   */
  createUser: (userData) => request({
    url: '/api/user/create',
    method: 'post',
    data: userData
  }),

  /**
   * 修改密码
   * @param {Object} passwordData - 密码数据
   * @param {string} passwordData.oldPassword - 旧密码
   * @param {string} passwordData.newPassword - 新密码
   * @returns {Promise} 返回修改结果
   */
  changePassword: (passwordData) => request({
    url: '/api/user/change-password',
    method: 'post',
    data: passwordData
  }),

  /**
   * 获取员工列表（用于创建用户）
   * @returns {Promise} 返回员工列表
   */
  getEmployees: () => request({
    url: '/api/user/employees',
    method: 'get'
  }),

  /**
   * 删除用户（管理员专用）
   * @param {string} username - 用户名
   * @returns {Promise} 返回删除结果
   */
  deleteUser: (username) => request({
    url: `/api/user/delete/${username}`,
    method: 'delete'
  }),

  /**
   * 提升用户权限为管理员
   * @param {string} username - 用户名
   * @returns {Promise} 返回提升结果
   */
  promoteAdmin: (username) => request({
    url: `/api/user/promote-admin/${username}`,
    method: 'put'
  }),

  /**
   * 提升用户权限为总管理员
   * @param {string} username - 用户名
   * @returns {Promise} 返回提升结果
   */
  promoteSuper: (username) => request({
    url: `/api/user/promote-super/${username}`,
    method: 'put'
  }),

  /**
   * 获取所有用户列表
   * @returns {Promise} 返回用户列表
   */
  getUserList: () => request({
    url: '/api/user/list',
    method: 'get'
  })
};

export default userApi;
